package cn.zyq.charging.common.pojo.utils;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

/**json和对象转换工具:  用springBoot框架集成的jackson转化json的工具实现*/
public class JsonUtils {

    //定义对象转换json工具ObjectMapper objectMapper
    private static ObjectMapper objectMapper = new ObjectMapper();

    /**
     * 将java对象转化为json字符串
     * @param obj 转化转化的java对象
     * @return json字符串
     */
    public static String toJson(Object obj){
        try {
            return objectMapper.writeValueAsString(obj);
        } catch (JsonProcessingException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 将json字符串转化为java对象
     * @param json 要转化的json字符串
     * @param clazz 最终要转化的对象类型
     * @return java对象
     * @param <T> 返回值类型
     */
    public static <T> T fromJsonToObject(String json, Class<T> clazz) {
        try {
            return objectMapper.readValue(json, clazz);
        } catch (JsonProcessingException e) {
            throw new RuntimeException(e);
        }
    }


    //将Object object对象转化为clazz对象：项目中是将LinkedHashMap对象转化为CostRulePO对象
    public static <T> T  convertValue(Object object,Class<T> clazz) {
        return objectMapper.convertValue(object, clazz);
    }
}
